/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AlmacenamientoT;
import java.util.*;
/**
 *
 * @author Miguel
 */
public class Relacion implements java.io.Serializable, Iterable<Atributo>{
    
    private List<Atributo> atributos;
    
    public Relacion(){
        atributos = new ArrayList<Atributo>();
    }
    
    public Relacion(List<Atributo> atributos){
        this.atributos = new ArrayList<Atributo>(atributos) ;
    }
    
    protected void adicionarAtributo(Atributo atributo){
        atributos.add(atributo);
    }
    
    protected void eliminarAtributo(int indice){
        atributos.remove(indice);
    }
     
    public int getNumeroDeAtributos(){
        return atributos.size();
    }
    
    public Iterator<Atributo> iterator(){
        return atributos.iterator();
    }
    
    public Atributo getAtributo(int i) {
        return atributos.get(i);
    }
    
    public int getIndiceAtributo2(String atr){
        int i = -1;
        for(Atributo atributo : atributos) {
            i++;
            if(atributo.getNombre().equals(atr)) {
                return i;
            }
        }
        return -1;
    }
    
    public int getIndiceAtributo(String atr) {

        int i = 0;
        for (Atributo atributo : atributos) {
            if (atributo.getNombre().equals(atr)) {
                return i;
            }
        }
        return -1;
    }
    
    public String toString() {
        StringBuilder sd = new StringBuilder();
        sd.append("(");
        for(int i = 0; i < getNumeroDeAtributos() - 1; i++){
            sd.append(getAtributo(i)).append(". ");
        }
        sd.append(getAtributo(getNumeroDeAtributos() - 1)).append(")");
        return sd.toString();
    }
    
    
    public static void main(String[] args) {
        // Crear un gestor de memoria
        Atributo atr1 = new Atributo("id_cliente",Integer.class);
        Atributo atr2 = new Atributo("nombre_cliente",String.class);
        Atributo atr3 = new Atributo("direccion_cliente",String.class);
        Atributo atr4 = new Atributo("telefono_cliente",int.class);
        
        Relacion Relacion1 = new Relacion();
        Relacion1.adicionarAtributo(atr1);
        Relacion1.adicionarAtributo(atr2);
        Relacion1.adicionarAtributo(atr3);
        Relacion1.adicionarAtributo(atr4);
        
        //mostrar
        System.out.println(Relacion1.toString());
        
        //TAREA 1:
        //adicionar un atributo
        Atributo atr5 = new Atributo("tipo_cliente",char.class);
        Relacion1.adicionarAtributo(atr5);
        
        //mostrar
        System.out.println(Relacion1.toString());
        //recuperar el indice de un atributo
        int indice = Relacion1.getIndiceAtributo2("telefono_cliente");
        //eliminar altributo por indice
        Relacion1.eliminarAtributo(indice);
        //mostrar
        System.out.println(Relacion1.toString());
        
        
        
        
    }
    
}